カスタマー管理キーがどのユーザーにより利用されているのかを確認する方法
困っていた内容
カスタマー管理キーがどのユーザーにより利用されているのかを確認したいです。 確認方法を教えてください。
どう対応すればいいの?
どのユーザーが利用しているかについては、CloudTrail イベントの userIdentity
の userName
より確認いただくことが可能となります。
キーの暗号化については、下記 API のイベントより確認することができます。
- Encrypt
- GenerateDataKey
- GenerateDataKeyWithoutPlaintext
キーの復号については、下記 API のイベントより確認することができます。
- Decrypt
やってみた
実際にどのように、CloudTrail イベントに記録されるのかを確認していきます。 今回は カスタマー管理キーを、S3 バケットの暗号化タイプとして、利用します。 その後、下記の操作を行い、CloudTrail でどのユーザーが暗号化/復号しているのかを確認します。
- ファイルのアップロードでどのユーザーにより暗号化されているのか
- ファイルのダウンロードをどのユーザーにより復号しているのか
事前に利用する IAMユーザーをキーの管理者およびキーのユーザーとして選択いただき、カスタマー管理キーを作成します。 その後、S3 バケットを作成します。 S3 バケットの設定はデフォルトのままとし、「デフォルトの暗号化」を「AWS Key Management Service キーを使用したサーバー側の暗号化 (SSE-KMS)」と選択して、作成したカスタマー管理キーを選択します。
その後、任意のファイルをアップロードします。
アップロードしたファイルをダウンロードします。
まずは、ファイルのアップロードでどのユーザーにより暗号化されているのかについて、CloudTrail のイベント履歴から確認します。
CloudTrail のイベント履歴から、フィルター機能を利用して、イベント名:GenerateDataKey
として検索します。
結果を確認しますと、下記のイベントが記録されていることが分かります。
userIdentity の userName を確認しますと、暗号化をしたユーザーを特定することができます。
====一部抜粋==== { "eventVersion": "1.09", "userIdentity": { "type": "IAMUser", "principalId": "XXXXXXXXXX", "arn": "arn:aws:iam::XXXXXXXXXXX:user/test-user", "accountId": "XXXXXXXX", "accessKeyId": "XXXXXXXXXXX", "userName": "test-user", "sessionContext": { "attributes": { "creationDate": "2024-05-12T08:32:17Z", "mfaAuthenticated": "true" } }, "invokedBy": "AWS Internal" }, "eventTime": "2024-05-12T08:44:34Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "ap-northeast-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "keySpec": "AES_256", "keyId": "arn:aws:kms:ap-northeast-1:XXXXXXXXXXX:key/XXXXXXXX", "encryptionContext": { "aws:s3:arn": "arn:aws:s3:::test-s3-kms-for-blog" } }, ====一部抜粋====
続いて、ファイルのダウンロードをどのユーザーにより復号しているのかについても、CloudTrail のイベント履歴から確認します。
フィルター機能をイベント名:Decrypt
として検索します。
下記のイベントが記録されており、userIdentity
の userName
を確認しますと、復号したユーザーを確認することができます。
====一部抜粋==== { "eventVersion": "1.09", "userIdentity": { "type": "IAMUser", "principalId": "XXXXXXXXXXX", "arn": "arn:aws:iam::XXXXXXXXXXX:user/test-user", "accountId": "XXXXXXXXXXX", "accessKeyId": "XXXXXXXXXXX", "userName": "test-user", "sessionContext": { "attributes": { "creationDate": "2024-05-12T08:32:17Z", "mfaAuthenticated": "true" } }, "invokedBy": "AWS Internal" }, "eventTime": "2024-05-12T08:44:54Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "ap-northeast-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "encryptionContext": { "aws:s3:arn": "arn:aws:s3:::test-s3-kms-for-blog" }, ====一部抜粋====
以上で、どのユーザーが暗号化/復号を行っているのかを確認しました。 どのユーザーにより操作されているのかが不明な際にご活用ください。